//#include "haridasu.h"

// total number of resources between all the file (adders, mults, subt, etc)
#define NUMBER_OF_RESOURCE_TYPES 17 
#define MAX_IMPL 3

// resource type preprocessor macro
#define IADD_TYPE 0
#define FADD_TYPE 1
#define ISUB_TYPE 2
#define FSUB_TYPE 3
#define IMULT_TYPE 4
#define FMULT_TYPE 5
#define RIGHT_SHIFT_TYPE 6
#define LEFT_SHIFT_TYPE 7
#define LOAD_TYPE 8
#define STORE_TYPE 9
#define IDIV_TYPE 10
#define FDIV_TYPE 11
#define CMP_TYPE 12
#define FABS_TYPE 13
#define FSQR_TYPE 14
#define IABS_TYPE 15
#define IAND_TYPE 16

const char resNames[NUMBER_OF_RESOURCE_TYPES][10] = {"IADD", "FADD", "ISUB", "FSUB", "IMULT", "FMULT", "RSHIFT", "LSHIFT",
								"LOAD", "STORE", "IDIV", "FDIV", "CMP", "FABS", "FSQR", "IABS", "IAND"};

// resource latency preprocessor macro
#define IADD 1
#define FADD 13
#define ISUB 1
#define FSUB 13
#define IMULT 5
#define FMULT 8
#define RIGHT_SHIFT 69
#define LEFT_SHIFT 1
#define LOAD 1
#define STORE 1
#define IDIV 35
#define FDIV 28
#define CMP 1
#define FABS 1
#define FSQR 28
#define IABS 1
#define IAND 1

#define NUM_RES	17		// <<<------ TODO - replace in haridasu.cpp with NUMBER_OF_RESOURCE_TYPES

#define match_found 0
// define the filenames for each CDFG 
#define TEST1 "1_absolute_difference.cdfg"
#define TEST2 "2_idct.cdfg"
#define TEST3 "3_search_one_pixel.cdfg"
#define TEST4 "4_sub_sample.cdfg"
#define TEST5 "5_cylindrical_bessel.cdfg"
#define TEST6 "6_synthesizer.cdfg"
#define TEST7 "7_wavelet.cdfg"

//NOTE: NUM_PRIM will always be four. Don't change this.
#define NUM_PRIM 4		//total number of device primitives (LUTs, flip flops, DSPs, BRAMs)

//Don't add or remove from this without first modifying 'struct R'
enum typePrim {BRAM=0, FF=1, LUT=2, DSP=3};  
char primNames[NUM_PRIM][5] = {"BRAM", "FF", "LUT", "DSP"};

int resTypeIter = 0;    //used for creating all the different types
